void
reduce( char & s,int & t )
{
	switch ( s ) {
		case 2: if ( t<2 ){
			err = 1;
				} else {
					if ( (stak[t-1] != 11) || (stak[t-2] != 1) ) {
						err = 1;
					} else {
						stak[t -= 2] = s = 13;
					}
				}
				break;
		case 8: stak[t] = s = 13;
			break;
		case 10: err = !(ok = (eos && (t == 0)));
			out = 1;
			break;
		case 11: if ( t < 2 ) {
			err = 1;
				 } else {
					 if ( (stak[t-1] != 3) || (stak[t-2] != 8) ) {
						 err = 1;
					 } else {
						 stak[t -= 2] = s = 10;
					 }
				 }
				 break;
		case 12: if ( t < 2 ) {
			err = 1;
				 } else {
					 s = 11;
					 if ( (stak[t-2] == s) && 
						 ((stak[t-1] == 4) ||
						 (stak[t-1] == 5)) ) {
							 t -= 2;
					 } else {
						 stak[t] = s;
					 }
				 }
				 break;
		case 13: if ( t < 2 ){
			err = 1;
				 } else {
					 s = 12;
					 if ( (stak[t-2] == s) && 
						 ((stak[t-1] == 6) ||
						 (stak[t-1] == 7)) ) {
							 t -= 2;
					 } else {
						 stak[t] = s;
					 }
				 }
				 break;
		default : err = 1;
	}
}
